package hotLeetcode;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.InputMismatchException;

public class H01Leetcode1 {

//    public int[] twoSum(int[] nums, int target) {
//        int sum = 0;
//        int length = nums.length;
//        for (int i = 0; i < length; i++) {
//            for (int j = i + 1; j < length; j++) {
//                if (nums[i] + nums[j] == target) {
//                    return new int[]{i, j};
//                }
//            }
//        }
//        return null;
//
//    }

    //能否用双指针？  ---错误解答
//    public int[] twoSum(int[] nums, int target) {
//
//        int length = nums.length;
//        if (length < 2) {
//            return null;
//        }
//
//
//        int left = 0;
//        int right = length - 1;
//        while (left < right) {
//            if (nums[left] + nums[right] > target) {
//                right--;
//            } else if (nums[left] + nums[right] < target) {
//                left++;
//            } else {
//                return new int[]{left, right};
//            }
//        }
//        return null;
//
//    }

//    //用hash？ 通过了 47%
//    public int[] twoSum(int[] nums, int target) {
//        HashMap<Integer, Integer> map = new HashMap<>();
//        //map里面应该存值和索引  key = 值 ， value = 下标
//        for (int i = 0; i < nums.length; i++) {
//            map.put(nums[i], i);
//        }
//
//        for (int i = 0; i < nums.length; i++) {
//            int key = target - nums[i];
//            if (map.containsKey(key) && map.get(key) != i) {
//                return new int[]{i, map.get(key)};
//            }
//        }
//
//
//        return null;
//
//
//    }


    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int key = target - nums[i];
            if (map.containsKey(key)) {
                return new int[]{i, map.get(key)};
            }
            map.put(nums[i], i);


        }

        return null;

    }





    public static void main(String[] args) {
        int[] nums = {3, 2, 4};
        H01Leetcode1 h01Leetcode1 = new H01Leetcode1();
        h01Leetcode1.twoSum(nums, 6);
    }





}
